/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package utilitarios.classes;

import java.util.*;
import javax.swing.*;

/**
 * @author Gabriel Moro
 * @since 19/02/2013
 * @version 0.2
 * 
 * Classe Utilitaria responsável pelos tratamentos das entrada de dados
 * pela interface
 */

public class Utilitaria {
    /**
     * Método responsável por tratar a entrada de dados de caráter nome
     * Ao verificar que o nome esta vazio ele dispara uma exception
     * do tipo IllegalArgumentException, se não estiver vazio 
     * o mesmo deixa maiúscula a primeira letra do nome do usuário e a retorna modificada
     * @param nome
     * @return String
     */
    public static String tratamentoDeNome(String nome){
        try{
        if(nome.equals("")||nome.isEmpty()){
            throw new IllegalArgumentException();
        }else{
        char p= nome.charAt(0);
        String primeiraLetra= null;
        primeiraLetra= primeiraLetra.valueOf(p);
        
        nome= nome.replaceFirst(primeiraLetra, primeiraLetra.toUpperCase());
        return nome;
        }
        }catch(IllegalArgumentException e){
            JOptionPane.showMessageDialog(null,"Erro: \nNão foi possível tratar esta entrada de dados","Alerta à usuário",JOptionPane.ERROR_MESSAGE);
        }
       return nome;
    }
    
/**
 * Método responsável por tratar qualquer tipo de entrada texto
 * se estiver nula ele dispara uma exception do tipo InputMismatchException
 * e senão estiver, ele remove todos os espaços daquela palavra e a retorna
 * @param palavra
 * @return String
 */
    
    public static String lerTexto(String palavra){
        try{
        if(palavra.equals("")|| palavra==null){
           throw new InputMismatchException();
        }else{
            palavra= palavra.trim();
            return palavra;
        }
        }catch(InputMismatchException erro){
            JOptionPane.showMessageDialog(null,"Erro: "+"\nCampo digitado não corresponde a um campo válido...","Alerta à usuário",JOptionPane.ERROR_MESSAGE);
            System.exit(0);
             return null;
        }
    }
    
    /**
     * Método responsável por converter uma String para um inteiro
     * @param palavra
     * @return int
     */
    
    public static int converteParaInteiro(String palavra){
        try{
        palavra= lerTexto(palavra);
        int x= Integer.parseInt(palavra);
        return x;
        }catch(NumberFormatException ne){
            JOptionPane.showMessageDialog(null, "Exception: NumberFormatException, impossível converter para dado numérico..."+
                    "\n Exception: "+ ne.getMessage(),"Alerta de erro",JOptionPane.ERROR_MESSAGE);
            return 0;
        }
    }
    /**
     * Método responsável por converter qualquer espécie de objeto 
     * para um tipo String
     * @param numero
     * @return String
     */
   
    public static String converteParaTexto(Object obj){
         String numeroTexto= null;
        try{
            numeroTexto= numeroTexto.valueOf(obj);
        }catch(InputMismatchException ip){
             JOptionPane.showMessageDialog(null, "Exception: NumberFormatException, impossível converter para dado numérico..."+
                    "\n Exception: "+ ip.getMessage(),"Alerta de erro",JOptionPane.ERROR_MESSAGE);
        }
        finally{
            return numeroTexto;
        }
    }
    
}
